The present disclosure relates generally to data processing and more particularly to handling query rewrites for data intensive applications in presence of run-time errors.
The rapid growth of digital technology has made data management a challenging task. This has created a recent demand for large-scale processing tools. This increase in demand has in turn inspired development of a number of declarative languages that can be compiled into execution plans for large clusters. Some common declarative languages include logic programming, functional programming and database query languages, such as SQL.
Declarative programming is a way of specifying what a program should do rather than how the program should do it. In imperative programming, the programming language is instructed to perform certain concrete steps to solve a problem that is well defined. However, when dealing with declarative programming, the programming language only indicates the essential characteristics of the problem and leave it to the computer to determine the best manner to solve the problem. For example, in a problem that requires students that scored more than 70 percent on a test, the programming language can either go through each record and determine when the condition is satisfied or quickly only take the top few records from every class and make sure that the condition is satisfied for them.
Declarative programming often considers programs as theories of a formal logic and computations as deductions in that logic space. One important reason that there has been an increased interest in declarative programming is that it allows parallel programs to be used which greatly simplify processes and perform operations quickly and efficiently.